/*
  * 1、使能GPIO1时钟
  * 2、设置GPIO1_IO03的复用功能
  * 3、配置GPIO1_IO03的 IO 属性 
  * 4、设置GPIO
  * 5、控制GPIO的输出电平
 */

.global _start      /* 全局标号 */

_start:
    /* 1、使能GPIO1时钟 */
    ldr r0, =0xffffffff
    ldr r1, =0x020c406c   /* CCM_CCGR1寄存器地址 */
    str r0, [r1]

    /* 2、设置GPIO1_IO03的复用功能 */
    ldr r0, =0x5
    ldr r1, =0x020e0068   /* IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03寄存器地址 */
    str r0, [r1]

    /* 3、配置GPIO1_IO03的 IO 属性 
        *bit 16:0 HYS 关闭
        *bit [15:14]: 00 默认下拉
        *bit [13]: 0 kepper 功能
        *bit [12]: 1 pull/keeper 使能
        *bit [11]: 0 关闭开路输出
        *bit [7:6]: 10 速度 100Mhz
        *bit [5:3]: 110 R0/6 驱动能力
        *bit [0]: 0 低转换率
    */
    ldr r0, =0x10b0
    ldr r1, =0x020e02f4     /* IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03寄存器地址 */
    str r0, [r1]

    /* 4、设置GPIO */   
    ldr r0, =0x8
    ldr r1, =0x0209c004     /*寄存器 GPIO1_GDIR（PDF:1357页）*/
    str r0, [r1]

    /* 5、控制GPIO的输出电平 */
    ldr r0, =0x0
    ldr r1, =0x0209c000     /*寄存器 GPIO1_DR（PDF:1357页）*/
    str r0, [r1]

loop:
    b loop
